import java.util.ArrayList;
import java.util.List;

/**
* @description: 984. 不含 AAA 或 BBB 的字符串
* @author hewei
* @date 2022/9/28 16:13
* @version 1.0
*/

public class StrWithout3a3b {

    public static void main(String[] args) {
        System.out.println(new StrWithout3a3b().strWithout3a3b(4, 1));
    }

    public String strWithout3a3b1(int a, int b) {
        StringBuilder ans = new StringBuilder();
        List<Integer> list = new ArrayList<>();
        while (a > 0 && b > 0) {
            if (a > b) {
                ans.append("a");
                list.add(ans.length() - 1);
                ans.append("b");
            } else {
                ans.append("b");
                list.add(ans.length() - 1);
                ans.append("a");
            }
            --a;
            --b;
        }
        if (a > 0) {
            ans.append("a");
            list.add(ans.length() - 1);
            --a;
        } else if (b > 0) {
            ans.append("b");
            list.add(ans.length() - 1);
            --b;
        }
        for (int i = 0; i < Math.max(a, b); i++) {
            Integer index = list.get(i) + i;
            if (a > 0) {
                ans.insert(index, "a");
            } else {
                ans.insert(index, "b");
            }
        }
        return ans.toString();
    }

    public String strWithout3a3b(int a, int b) {
        if (a == 0) return b == 1 ? "b" : (b == 2 ? "bb" : "");
        if (b == 0) return a == 1 ? "a" : (a == 2 ? "aa" : "");
        if (a == b) return "ab" + strWithout3a3b(a - 1, b - 1);
        if (a > b) return "aab" + strWithout3a3b(a - 2, b - 1);
        return "bba" + strWithout3a3b(a - 1, b - 2);
    }
}
